In programmazione, è detta overloading (o sovraccarico) la creazione di una famiglia di funzioni/subroutine aventi tutte lo stesso nome, ma che accettino un diverso insieme di argomenti (firma), e che eventualmente restituiscano un diverso valore di ritorno. Tale famiglia di funzioni è detta in rapporto di Overloading, o sovraccaricata. Non tutti i linguaggi di programmazione consentono l'overloading.
A seconda dei casi, si può parlare di overloading di funzioni, di costruttori e di operatori. Sovraccaricare il costruttore di una classe è una pratica comune per gli sviluppatori di librerie, in quanto permette loro di fornire allo sviluppatore finale diverse modalità per istanziare inizializzando l'oggetto della classe con determinati valori iniziali.